package com.anttribe.components.db.metadata.supplier;

import java.util.List;

import com.anttribe.components.db.metadata.Dialect;
import com.anttribe.components.db.metadata.entity.Database;
import com.anttribe.components.db.metadata.entity.DbSchema;
import com.anttribe.components.db.metadata.entity.DbTable;

/**
 * @author zhaoyong
 * @date 2021/10/16 0016
 */
public interface DatabaseSupplier {

    /**
     * 获取当前处理数据库方言
     *
     * @return Dialect
     */
    Dialect getDialect();

    /**
     * 获取当前数据库产品信息
     *
     * @return Database
     */
    Database getDatabase();

    /**
     * 获取当前数据库信息
     *
     * @return DbSchema
     */
    DbSchema getDbSchema();

    /**
     * 获取所有的数据库表
     *
     * @return List<DbTable>
     */
    List<DbTable> getTables();

    /**
     * 获取指定匹配数据库名数据库表
     *
     * @param tableNamePattern
     * @return List<DbTable>
     */
    List<DbTable> getTables(String tableNamePattern);

    /**
     * 获取指定表名的表
     *
     * @param tableName
     * @return DbTable
     */
    DbTable getTable(String tableName);

}
